#include "XmlInfoVille.hpp"

/**
 * Constructeur standard, qui initialise la classe mère et le nom de
 * l'objet.
 *
 * @param[in] nomFichier nom du fichier XML lu.
 * @param[in] id numéro d'identification de l'objet.
 * @param[in] nom nom de l'objet.
 * @param[in] pays nom du pays.
 * @param[in] reputation score de réputation de l'agence sur cette
 * ville.
 * @param[in] nbrInfernaux nombre de contrats infernaux effectués sur
 * la ville.
 * @param[in] pourcentageInfernal pourcentage d'apparition d'un
 * contrat infernal sur la ville.
 */
XmlInfoVille::XmlInfoVille( const QString& nomFichier, const unsigned& id,
			    const QString& nom, const QString& pays,
			    const unsigned& reputation,
			    const unsigned& nbrInfernaux,
			    const unsigned& pourcentageInfernal )
  : XmlInfoNom( nomFichier, id, nom ), Pays( pays ), Reputation( reputation ),
    NbrInfernaux( nbrInfernaux ), PourcentageInfernal( pourcentageInfernal )
{}

/**
 * Constructeur de copie, permettant de dupliquer une instance de
 * %XmlInfoVille.
 *
 * @param[in] identifiant instance de %XmlInfoVille à copier.
 */
XmlInfoVille::XmlInfoVille( const XmlInfoVille& ville )
  : XmlInfoNom( ville ),
    Pays( ville.pays() ),
    Reputation( ville.reputation() ),
    NbrInfernaux( ville.nbrInfernaux() ),
    PourcentageInfernal( ville.pourcentageInfernal() )
{}

/**
 * Le destructeur n'au rien de particulier à faire.
 */
XmlInfoVille::~XmlInfoVille()
{}

/**
 * Opérateur d'affectation, permettant de copier le contenu d'une
 * instance de %XmlInfoVille dans l'instance courante.
 *
 * @param[in] identifiant instance de %XmlInfoVille à copier.
 *
 * @return une référence sur l'instance courante.
 */
XmlInfoVille& XmlInfoVille::operator=( const XmlInfoVille& ville )
{
  if ( &ville != this )
    {
      this -> XmlInfoNom::operator=( ville );

      Pays                = ville.pays();
      Reputation          = ville.reputation();
      NbrInfernaux        = ville.nbrInfernaux();
      PourcentageInfernal = ville.pourcentageInfernal();
    }

  return *this;
}

/**
 * Permet d'accéder au pays.
 *
 * @return une référence constante sur Pays.
 */
const QString& XmlInfoVille::pays() const
{
  return Pays;
}

/**
 * Permet d'accéder à la réputation de l'agence.
 *
 * @return une référence constante sur Reputation.
 */
const unsigned& XmlInfoVille::reputation() const
{
  return Reputation;
}

/**
 * Permet d'accéder aux nombre de contrats infernaux effectués sur
 * cette ville.
 *
 * @return une référence constante sur NbrInfernaux.
 */
const unsigned& XmlInfoVille::nbrInfernaux() const
{
  return NbrInfernaux;
}

/**
 * Permet d'accéder à la progression de l'apparition d'un contrat
 * infernal sur la ville.
 *
 * @return une référence constante sur PourcentageInfernal.
 */
const unsigned& XmlInfoVille::pourcentageInfernal() const
{
  return PourcentageInfernal;
}

/**
 * Permet de changer la valeur de Pays.
 *
 * @param[in] pays nouvelle valeur de Pays.
 */
void XmlInfoVille::setPays( const QString& pays )
{
  Pays = pays;
}

/**
 * Permet de changer la valeur de Reputation.
 *
 * @param[in] reputation nouvelle valeur de Reputation.
 */
void XmlInfoVille::setReputation( const unsigned& reputation )
{
  Reputation = reputation;
}

/**
 * Permet de changer la valeur de NbrInfernaux.
 *
 * @param[in] nbrInfernaux nouvelle valeur de NbrInfernaux.
 */
void XmlInfoVille::setNbrInfernaux( const unsigned& nbrInfernaux )
{
  NbrInfernaux = nbrInfernaux;
}

/**
 * Permet de changer la valeur de PourcentageInfernal.
 *
 * @param[in] pourcentageInfernal nouvelle valeur de
 * PourcentageInfernal.
 */
void XmlInfoVille::setPourcentageInfernal( const unsigned& pourcentageInfernal )
{
  PourcentageInfernal = pourcentageInfernal;
}

